--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Commit da0ba60b71d9814e1c21e502b43f9f209ac9f949
Parents : 5443040
Author : Mark Qvist <mark@unsigned.io>
Date : 2021-05-14T12:43:29+02:00
Added failed state to LXMF messages
Changes
Diff
diff --git a/LXMF/LXMF.py b/LXMF/LXMF.py
index d3d967e..9a00fa3 100644
--- a/LXMF/LXMF.py
+++ b/LXMF/LXMF.py
@@ -12,7 +12,8 @@ class LXMessage:
SENDING = 0x02
SENT = 0x04
DELIVERED = 0x08
- states = [DRAFT, OUTBOUND, SENDING, SENT, DELIVERED]
+ FAILED = 0xFF
+ states = [DRAFT, OUTBOUND, SENDING, SENT, DELIVERED, FAILED]
UNKNOWN = 0x00
PACKET = 0x01
@@ -122,6 +123,7 @@ class LXMessage:
self.resource_representation = None
self.__delivery_destination = None
self.__delivery_callback = None
+ self.__failed_callback = None
def set_title_from_string(self, title_string):
self.title = title_string.encode("utf-8")
@@ -180,6 +182,9 @@ class LXMessage:
def register_delivery_callback(self, callback):
self.__delivery_callback = callback
+ def register_failed_callback(self, callback):
+ self.__failed_callback = callback
+
def pack(self):
if not self.packed:
if self.timestamp == None:
@@ -248,6 +253,7 @@ class LXMessage:
self.state = LXMessage.SENDING
self.resource_representation = self.__as_resource()
elif self.method == LXMessage.PROPAGATED:
+ # TODO: Implement propagation
pass
def __mark_delivered(self, receipt = None):
@@ -257,6 +263,13 @@ class LXMessage:
if self.__delivery_callback != None:
self.__delivery_callback(self)
+ def __mark_failed(self, receipt = None):
+ RNS.log(str(self)+" failed to send", RNS.LOG_DEBUG)
+ self.state = LXMessage.FAILED
+
+ if self.__failed_callback != None:
+ self.__failed_callback(self)
+
def __resource_concluded(self, resource):
if resource.status == RNS.Resource.COMPLETE:
self.__mark_delivered()
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────